Electronic trading systems allow entry of a bid or offer for a particular tradable item. These simple bids and offers are called outright orders, in contrast with spread orders, discussed in more detail below.
A spread order is the simultaneous purchase and sale of two tradable items, such as futures contracts for different months, different commodities, or different grades of the same commodity. Each bid and offer component of a spread is termed a bid leg and an offer leg respectively. Real orders are orders that are entered into the system by traders. The traders enter the appropriate information into the trading system and release the order into the system as an open order. Real orders may be entered for any tradable item in the system including, but not limited to, futures, options, inter-commodity spreads, intra-commodity spreads, futures strips, etc.
Implied orders, unlike real orders, are generated by the system on the behalf of traders who have entered real orders. For example, an implied spread may be derived from two real outrights. The system creates the “derived” or “implied” order and displays the market that results from the creation of the implied order as a market that may be traded against. If a trader trades against this implied market, then the real orders that combined to create the implied order and the resulting market are executed as matched trades.
Trading systems that derive implied orders are often limited by computing capacity and speed. Prior-art trading systems do not have an efficient method of determining all possible or best possible implied markets, especially when the order combinations involve more than a few orders.
Contemporary trading systems are typically implemented with distributed architectures. These systems include functional components with a high degree of logical separation so that each component is largely insulated from the actions of other components. Distributed systems leverage the improved abilities to communicate between system components so that complex functions can be implemented as many small components. These smaller components are easier to design and maintain, and provide much greater flexibility in adapting to a variety of computer hardware/operating system environments.
The order matching function in a trading system is typically performed by a specialized component referred to as the Match Engine, of which there may be multiple instances. Each Match Engine is a specialized order matching component that receives orders, stores them internally, calculates tradable combinations and advertises the availability of real and implied orders in the form of market data. When the traders using the system respond to the market data by sending additional orders, these are received by the Match Engine, which then attempts to match them with previously received orders or combinations thereof. The Match Engine executes the possible trades and communicates the results.
Implied orders frequently have better prices than the corresponding real orders in the same contract. This can occur when two or more traders incrementally improve their order prices in hope of attracting a trade. Combining the small improvements from two or more real orders can result in a big improvement in the implied order. In general, advertising implied orders at better prices will encourage traders to enter the opposing orders to trade with them. The more combinations that the Match Engine can calculate, the greater this encouragement will be, and the more the exchange will benefit from increased transaction volume. However, as the number of advertised orders increases, so does the time required to calculate and publish them as market data. This creates a problem for the exchange, since traders expect a quick response from the trading system and are ready to take their business elsewhere if they do not get it.
In prior-art systems, the inability to calculate and publish implied orders in a timely manner has limited their use. In these systems only a few simple combinations are calculated and then only for a small number of heavily traded contracts. In contrast, implementation of the present invention allows for the efficient calculation of large combinations for large numbers of related contracts. It accomplishes this by dividing the contracts inside the Match Engine into groups that can be calculated in parallel and by filtering the market data so that implied orders with a greater probability of trading are reported more promptly and more frequently.
The discussion of the background to the invention herein is included to explain the context of the invention. This is not to be taken as an admission that any of the material referred to was published, known, or part of the common general knowledge as at the priority date of any of the claims.
Throughout the description and claims of the specification the word “comprise” and variations thereof, such as “comprising” and “comprises”, is not intended to exclude other additives, components, integers or steps.